package com.fowo.api.model.purchase.change.order;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 变更单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class PurchaseChangeOrderImportPo {

  /** 变更单号 */
  @ExcelProperty("*变更单号")
  @NotBlank(message = "变更单号不能为空")
  private String cOrderSn;

  /** 供应商 */
  @ExcelProperty("供应商")
  @Size(max = 50, message = "供应商长度不能超过50")
  private String supplierIdSupplierName;

  @ExcelIgnore
  @Schema(title = "供应商")
  private String supplierId;

  /** 采购仓库 */
  @ExcelProperty("采购仓库")
  @Size(max = 50, message = "采购仓库长度不能超过50")
  private String widName;

  @ExcelIgnore
  @Schema(title = "采购仓库")
  private String wid;

  /** 联系人 */
  @ExcelProperty("联系人")
  @Size(max = 50, message = "联系人长度不能超过50")
  private String contactPerson;

  /** 联系方式 */
  @ExcelProperty("联系方式")
  @Size(max = 50, message = "联系方式长度不能超过50")
  private String contactNumber;

  /** 结算方式 */
  @ExcelProperty("结算方式")
  private String settlementMethod;

  /** 预付比例 */
  @ExcelProperty("预付比例")
  @DecimalString(message = "预付比例小数格式不正确", label = "预付比例")
  private String advanceRatio;

  /** 结算描述 */
  @ExcelProperty("结算描述")
  @Size(max = 50, message = "结算描述长度不能超过50")
  private String settlementDescribe;

  /** 支付方式 */
  @ExcelProperty("支付方式")
  private String paymentMethod;

  /** 采购币种 */
  @ExcelProperty("采购币种")
  private String purchaseCurrency;

  /** 运费 */
  @ExcelProperty("运费")
  @DecimalString(message = "运费小数格式不正确", label = "运费")
  private String shippingPrice;

  /** 其他费用 */
  @ExcelProperty("其他费用")
  @DecimalString(message = "其他费用小数格式不正确", label = "其他费用")
  private String otherFee;

  /** 费用分配方式 */
  @ExcelProperty("费用分配方式")
  @EnumsString(
    value = { "不分配", "按金额", "按数量" },
    message = "费用分配方式只能是“不分配”, “按金额”, “按数量”中的一个"
  )
  private String feePartType;

  /** 含税 */
  @ExcelProperty("含税")
  @EnumsString(value = { "否", "是" }, message = "含税只能是“否”, “是”中的一个")
  private String includingTax;

  /** 采购员 */
  @ExcelProperty("采购员")
  @Size(max = 50, message = "采购员长度不能超过50")
  private String optUidName;

  @ExcelIgnore
  @Schema(title = "采购员")
  private String optUid;

  /** 采购方 */
  @ExcelProperty("采购方")
  @Size(max = 50, message = "采购方长度不能超过50")
  private String purchaserName;

  @ExcelIgnore
  @Schema(title = "采购方")
  private String purchaser;

  /** 下单时间 */
  @ExcelProperty("下单时间")
  @DateTimeString(message = "下单时间不是有效的时间日期格式")
  private String orderTime;

  /** 数量 */
  @ExcelProperty("数量")
  private String quantity;

  /** 金额 */
  @ExcelProperty("金额")
  private String amount;

  /** 状态 */
  @ExcelProperty("状态")
  @EnumsString(
    value = { "已驳回", " 待审核", "已处理" },
    message = "状态只能是“已驳回”, “ 待审核”, “已处理”中的一个"
  )
  private String status;

  /** 采购类型 */
  @ExcelProperty("采购类型")
  @EnumsString(
    value = { "普通采购" },
    message = "采购类型只能是“普通采购”中的一个"
  )
  private String purchaseType;

  /** 质检类型 */
  @ExcelProperty("质检类型")
  @EnumsString(
    value = { "仓库质检", "预检", "免检" },
    message = "质检类型只能是“仓库质检”, “预检”, “免检”中的一个"
  )
  private String inspectionType;

  /** 采购单号 */
  @ExcelProperty("*采购单号")
  @NotBlank(message = "采购单号不能为空")
  @Size(max = 50, message = "采购单号长度不能超过50")
  private String orderSn;

  /** 结算账期 */
  @ExcelProperty("结算账期")
  @EnumsString(
    value = { "入库后付款", "入库号一个月付款" },
    message = "结算账期只能是“入库后付款”, “入库号一个月付款”中的一个"
  )
  private String closingPeriod;

  /** 变更单备注 */
  @ExcelProperty("变更单备注")
  @Size(max = 50, message = "变更单备注长度不能超过50")
  private String remarks;

  /** 运费币种 */
  @ExcelProperty("运费币种")
  private String shippingCurrency;

  /** 其他费用币种 */
  @ExcelProperty("其他费用币种")
  private String otherCurrency;

  /** 汇率 */
  @ExcelProperty("汇率")
  @DecimalString(message = "汇率小数格式不正确", label = "汇率")
  private String rate;

  /** 货币币种 */
  @ExcelProperty("货币币种")
  @Size(max = 60, message = "货币币种长度不能超过60")
  private String currencyName;

  @ExcelIgnore
  @Schema(title = "货币币种")
  private String currency;

  /** 旧金额 */
  @ExcelProperty("旧金额")
  @DecimalString(message = "旧金额小数格式不正确", label = "旧金额")
  private String oldAmount;

  /** 旧数量 */
  @ExcelProperty("旧数量")
  @IntegerString(message = "旧数量数值格式不正确", label = "旧数量", min = 0)
  private String oldquantity;

  /** 变更创建人 */
  @ExcelProperty("变更创建人")
  @Size(max = 50, message = "变更创建人长度不能超过50")
  private String creatorOpName;

  @ExcelIgnore
  @Schema(title = "变更创建人")
  private String creatorOp;

  /** 变更创建时间 */
  @ExcelProperty("变更创建时间")
  @DateString(message = "变更创建时间不是有效的日期格式")
  private String creationTime;
}
